<template>
  <div class="tab-bar-item" @click="itemClick">
    <div v-if='!isShow'>
      <slot  name="item-icon"></slot>
    </div>
    <div v-else>
      <slot  name="item-icon-active"></slot>
    </div>
<!-- 插槽是用来被替换的，不能在插槽这里定义class和v-if等等，因为会被替换掉，可以在外面包一层div-->
    <div :style="activeStyle">
      <slot  name="item-text"></slot>
    </div>
  </div>
</template>

<script>
export default {
  name: "TabBarItem",
  props:{
    path:String,
    activeColor:{
      type:String,
      default:'red'
    }
  },
  data(){
    return{
      // isShow:false,
    }
  },
  computed:{
    isShow(){
      //判断当前活跃路由的路径是否包含当前路由路径
      // 当前活跃路由/home -> item1(/home) =true
      // 当前活跃路由/home -> item1(/category) =false
      // 当前活跃路由/home -> item1(/cate) =false
      // indexOf：如果==-1 说明在this.$route.path里面没有找到this.path 返回false
      //             !==-1 说明在this.$route.path里面找到this.path 返回true
      return this.$route.path.indexOf(this.path) !== -1
    },
    activeStyle(){
      // console.log(this.activeColor);
      //this.isShow是否处于活跃，如果true返回{color:this.activeColor} 否则返回{}
      return this.isShow ? {color:this.activeColor} : {}
    }
  },
  methods:{
    itemClick(){
      this.$router.push(this.path).catch((error)=>error);
    }
  }

}
</script>

<style scoped>
 .tab-bar-item img{
  width:24px;
  height: 24px;
  margin-top:3px;
   /*vertical-align 属性设置元素的垂直对齐方式
   该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐*/
   vertical-align: middle;
   margin-bottom:2px;
}

</style>